﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;

namespace whuc.PlaneGame
{
    /// <summary>
    /// 敌人的飞机
    /// </summary>
    public class Enemy
    {
        public int X { get; set; }
        public int Y { get; set; }
        public Image img { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }

        //还应该有一个特殊的属性叫type    0代表小飞机，1代表中飞机，2代表大飞机
        public int Type { get; set; }
        public int Speed { get; set; }   //飞机的移动速度
        public int Life { get; set; }    //飞机的生命值
        public int Score { get; set; }   //当前的飞向值多少分

        public Enemy(int x,int y,int type)
        {
            this.X = x;
            this.Y = y;
            this.Type = type;
            //飞机的图片它没有固定下来，它是根据我们飞机的类型来决定的
            if (this.Type==0)
            {
                //小飞机
                this.img = Properties.Resources.enemy0;
                this.Speed = 5;
                this.Life = 1;
                this.Score = 10;
            }
            else if (this.Type==1)
            {
                //中飞机
                this.img = Properties.Resources.enemy1;
                this.Speed = 3;
                this.Life = 3;
                this.Score = 30;
            }
            else if (this.Type==2)
            {
                //大飞机
                this.img = Properties.Resources.enemy2;
                this.Speed = 2;
                this.Life = 10;
                this.Score = 50;
            }
            this.Width = this.img.Width;
            this.Height = this.img.Height;
        }

        /// <summary>
        /// 敌人飞机移动的方法
        /// </summary>
        public void Move()
        {
            this.Y = this.Y + this.Speed;
            //当飞机移动到屏幕外边的时候，应该让自己消失
            if (this.Y>850)
            {
                //把自己移除掉
                DataUtil.enemyList.Remove(this);
            }
        }

        //把自己画出来
        public void Draw(Graphics g)
        {
            this.Move();
            g.DrawImage(this.img, this.X, this.Y, this.Width, this.Height);
        }

        /// <summary>
        /// 获取游戏对象的矩形
        /// </summary>
        /// <returns>矩形</returns>
        public Rectangle getRectangle()
        {
            return new Rectangle(this.X,this.Y,this.Width,this.Height);
        }

        /// <summary>
        /// 是否死亡
        /// </summary>
        /// <returns></returns>
        public bool IsDie()
        {
            this.Life--;
            if (this.Life<=0)
            {
                //你死了
                //播放死亡音乐
                System.Media.SoundPlayer sound = new System.Media.SoundPlayer(Properties.Resources.enemy0_down1);
                sound.Play();

                //播放爆炸动画
                Boom b = new Boom(this);
                DataUtil.boomList.Add(b);

                //计算得分
                DataUtil.Score += this.Score;      //在原来的得分之上，加上现在的得分

                DataUtil.enemyList.Remove(this);   //把自己移除

                return true;
            }
            else
            {
                //说明你被打了，但是你是一个残血的状态   要更改飞机的图片
                if (this.Type==1)
                {
                    //说明是中飞机
                    this.img = Properties.Resources.enemy1_hit;
                }
                else if (this.Type==2)
                {
                    //说明是大飞机
                    this.img = Properties.Resources.enemy2_hit;
                }
                return false;
            }
        }
    }
}
